【发布时间】:2025-12-08 22:55:02
【问题描述】:
我正在尝试去掉逗号,将第二个单词存入secondWord,然后输出secondWord。
我的代码:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
istringstream inSS;
string lineString;
string firstWord;
string secondWord;
int i;
bool correct = false;
cout << "Enter input string:" << endl;
while (!correct)
{
// Entire line into lineString
getline(cin, lineString);
// Copies to inSS's string buffer
inSS.clear();
inSS.str(lineString);
// Now process the line
inSS >> firstWord;
// Output parsed values
if (firstWord == "q")
{
cout << "q" << endl;
correct = true;
}
inSS >> secondWord;
if(secondWord[i] != ',')
{
cout<<"Error: No comma in string."<<endl;
}
else if (secondWord[i] == ',')
{
cout << "First word: " << firstWord << endl;
cout << "Second word: " << secondWord << endl;
cout << endl;
}
}
return 0;
}
可接受的输入: 吉尔,艾伦 吉尔,艾伦 吉尔,艾伦
代码生成逗号作为第二个单词,但我想去掉逗号和空格并去掉第二个单词。
【问题讨论】:
-
好像 i 未初始化
-
无论如何,你可以看看这个问题:*.com/questions/53849/… 来了解如何标记一个字符串。
-
如果 i 未初始化,代码行为将未定义,因此任何事情都可能发生。无论如何,您应该向我们提供一个示例输入,
a, b、a , b、a,b使用您的代码可能会产生非常不同的结果。 -
问题是当你
inSS >> firstWord;当你的输入是Jill, Allen时,你也会接受逗号,所以逗号不应该出现在你的第二个单词中,因此会出现错误。转到我之前发布的链接以了解如何标记字符串。 -
我读过tokenize,但我们还没有在课堂上学过,必须坚持使用涵盖的材料。
标签: c++ string parsing iostream cout