【发布时间】:2014-01-20 05:24:53
【问题描述】:
我有这样的字符串6.28:12.56:-1:1,由: 分隔的4 个双精度值,我需要获取每个双精度常量并将每个插入到不同的变量中。最简单的方法是什么?谢谢。
【问题讨论】:
我有这样的字符串6.28:12.56:-1:1,由: 分隔的4 个双精度值,我需要获取每个双精度常量并将每个插入到不同的变量中。最简单的方法是什么?谢谢。
【问题讨论】:
您通常会为此使用strtok(strtok_r,如果您使用线程或可能有其他重叠的解析序列)。
【讨论】:
strtok 在解析字符串时会对其进行修改,因此您可能应该将其复制到临时数组中。
来自http://www.dotnetperls.com/split:
String.Split() 分隔字符串。字符串通常在其数据中具有分隔符。定界符包括“\r\n”换行符序列以及逗号和制表符。 Split 处理字符串和字符分隔符的拆分。
string s = "6.28:12.56:-1:1";
//
// Split string on ':'.
// ...
//
string[] words = s.Split(':');
for(int i=0;i < words.length;i++)
{
string word1=words[0];
string word2=words[1];
string word3=words[2];
string word4=words[3];
}
对于 ANSI C
使用 sscanf
char st[] = "6.28:12.56:-1:1";
double word1, word2, word3, word4;
int rc = sscanf(st, "%lf:%lf:%lf:%lf", &word1, &word2, &word3, &word4);
/* Check that rc is 4 for success */
*sscanf 函数返回成功读取的项目数
【讨论】:
"6.28:12.56:-1:1:1.23"(除非您动态构建格式字符串,但这将是矫枉过正)。