C ++检查空格/返回的字符串数组

时间:2015-10-28 02:37:01

标签: c++

我想对字符串数组进行空格/返回检查。还有一点我想......

用户输入两行,都是字符串。为了适应这两行,而不是制作两个单独的字符串变量,我创建了一个名为string x[2]的字符串数组。然后输入被合并到一个名为string combined的变量中,然后在一行上输出所有内容。

无论如何,我希望程序允许每一行有多个字符串,即第一行是I like tuna,第二行是blah blah。我试图使它成为像x[2][3]这样的多维数组,但如果它们只输入一行中的一个单词,那么它会强制它们进入更多行,直到数组完全填满。

我希望用户在每行中最多输入3个单词,最多输入两行。所以这不意味着我必须检查空格和退货吗?如果是这样,怎么样?

我不想让这个帖子无代码,所以对于某些参考点,这是我的原始代码,它只允许他们每行输入一个单词和两行:

int main()
{
    string x[2], combined;
    for (int i = 0; i < 2; ++i)
    {
        cin >> x[i];
        if (i == 0) combined = x[0];
        else
            combined += " " + x[i];
    }
    cout << combined << endl;
}
/*

程序:

Hello
World
Hello World
Press any key to continue...

如果这个帖子/问题非常含糊不清,我很抱歉,我似乎没有多想,但我是初学者,并且无法弄清楚这一点。谢谢你的时间!

3 个答案:

答案 0 :(得分:3)

使用getline

for (int i = 0; i < 2; ++i)
{
    getline(cin, x[i]);
}

答案 1 :(得分:2)

使用getline读取整行输入

string x[2];
cout<<"input first string"<<endl;
getline(cin, x[0]);
cout<<"input second string"<<endl;
getline(cin, x[1]);

cout<<"Printing first string "<<x[0]<<endl;
cout<<"Printing second string "<<x[1]<<endl;

答案 2 :(得分:0)

在C中有一个类似的问题。如果用户输入带空格的字符串(因为会出现错误),你就不能使用scanf(),你必须使用不安全的gets()。