如何在C++中输入逗号分隔的字符串?
在C++编程中,有时候会遇到需要从输入中读取逗号分隔的字符串的情况。那么该如何在C++中实现呢?本文将为您介绍几种实现方法。
方法一:使用getline和stringstream
使用C++标准库中的getline和stringstream函数可以很方便地读取逗号分隔的字符串。
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string input_str;
cout << "请输入逗号分隔的字符串:";
getline(cin, input_str);
stringstream ss(input_str); // 将input_str转换为stringstream格式
string substr;
while (getline(ss, substr, ',')) // 以逗号为分隔符提取子字符串
{
cout << substr << endl;
}
return 0;
}
运行结果:
请输入逗号分隔的字符串:A,B,C,D
A
B
C
D
方法二:使用strtok函数
strtok函数可以将字符串按照指定分隔符进行分割。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char input_str[100];
cout << "请输入逗号分隔的字符串:";
cin.getline(input_str, 100);
char* substr = strtok(input_str, ","); // 以逗号为分隔符提取子字符串
while (substr != NULL)
{
cout << substr << endl;
substr = strtok(NULL, ",");
}
return 0;
}
运行结果:
请输入逗号分隔的字符串:A,B,C,D
A
B
C
D
方法三:使用string的find和substr函数
另一种常见的方法是使用string的find和substr函数。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string input_str;
cout << "请输入逗号分隔的字符串:";
getline(cin, input_str);
size_t pos = 0;
string substr;
while ((pos = input_str.find(",")) != string::npos) // 查找逗号位置
{
substr = input_str.substr(0, pos); // 提取子字符串
cout << substr << endl;
input_str.erase(0, pos + 1); // 将已经提取的子字符串从input_str中删除
}
cout << input_str << endl; // 输出最后一个子字符串
return 0;
}
运行结果:
请输入逗号分隔的字符串:A,B,C,D
A
B
C
D
通过以上方法,我们可以轻松地实现在C++中输入逗号分隔的字符串的功能。
结论
本文介绍了三种C++中输入逗号分隔的字符串的方法,分别为使用getline和stringstream函数、strtok函数以及string的find和substr函数。通过这些方法,我们可以方便地实现对逗号分隔的字符串的处理。