如何在C++中用逗号分隔字符串
how to split a string on comma in C++
我目前有这样的代码,用户可以在其中输入一个数字,表示他们想要在数组中有多少个数字。后面跟着"12345",但写了大约一秒钟后,我意识到只有当他们输入数字0-9时,这才有效——任何两位数或更多的数字都不起作用。
int numberOfValues;
cout << "Please enter the amount of integers you want in the array" << endl;
cin >> numberOfValues;
int valuesArray[numberOfValues];
string valuesString;
cout << "Please Enter " << numberOfValues << " numbers" << endl;
cin>>valuesString;
for(int i = 0; i < numberOfValues; i++)
{
valuesArray[i] = valuesString[i];
}
return valuesArray;
我认为最好的方法是让用户输入用逗号分隔的数字,然后将其拆分(iv在java中做了同样的小程序,并试图将其更改为C++以供我个人学习(,就像在java中我使用的字符串一样。split(","(我想知道C++中是否有类似的东西??
我能想到的最简单的方法是避免读取中间字符串,让cin为您完成工作:
std::vector<int> valuesArray;
int i = 0;
do {
cin >> i;
valuesArray.push_back(i);
} while (valuesArray.size() < numberOfValues && cin.get() == ',');
/* edit: You may need to consume a 'n', if you expect one, too: */
do {
i = cin.get();
} while (i != 'n');
使用strtok
。文档和示例可在此处找到
使用字符串::substr((和字符串::find((的组合。查找下一个逗号字符,然后查找从当前位置到下一个命令字符的子字符串
它不是标准的C++字符串,但Qt的QString
类仍然提供了一个现成的方法QString::split(...)
,支持正则表达式、拆分行为选项、区分大小写等等。。。
我不久前写了一个标记器,希望它对你有用:
std::vector<std::string> tokenize(const std::string &_line,const char *_delimeter)
{
std::vector<std::string> Tokens;
if(_line.empty()) return Tokens;
std::string str;
BOOST_FOREACH(char c,_line){
if(c==*_delimeter)
{
Tokens.push_back(str);
str.clear();
continue;
}
str += c;
}
if(!str.empty())
Tokens.push_back(str);
return Tokens;
}
它效率不高,但可用于测试目的。
相关文章:
- 如何分隔字符串并将标记传递给方法
- C++ 用空格和逗号分隔字符串
- 如何将整数值解析为逗号分隔字符串中的单独 int 变量?
- 如何分隔字符串并将每个部分存储在不同的向量中
- 如何按特定分隔符分隔字符串
- 逗号分隔字符串的总和,例如 O(n) 中的 4,1,3
- 如何使用符号分隔字符串而不是空格的输入字符串流
- C++中将不同类型的变量列表连接到逗号分隔字符串的最快方法是什么?
- C++ sscanf 空格分隔字符串
- 在C++中分隔字符串并存储到数组中的最佳方法
- 使用 find_first_of() 和 substr() 分隔字符串,但我得到的输出不正确
- 正在分析逗号分隔字符串中的整数
- 分析分隔字符串
- 用空格分隔字符串的最简单方法
- 分隔字符串的最佳ASCII字符是什么
- C++用空格和标点符号分隔字符串
- c#中分隔字符串中的数字和单位
- 如何基于标记分隔字符串
- c++使用wstring拆分unicode分隔字符串
- 如何在C++中用逗号分隔字符串