我需要编写一个代码,从用户那里获取输入(句子)并停在@

时间:2017-03-22 17:51:09

标签: c++ visual-c++

正如我所说,我需要将此代码编写为我的hw但是我需要在while循环中编写这个代码,因为我们不知道用户会写出多大的句子或者他们将编写多少句子。这将是一个段落

string word;
string parag;
while (cin >> word)
{
    parag += word;
    for ( unsigned int k = 0; k < parag.length(); k++ )
    {
        if (parag.at(k) == '@')
        break;
    }
}

我知道这里有问题,但即使我写了“@”也不会停止。我不知道该怎么办我只是一个初学者。

2 个答案:

答案 0 :(得分:1)

DO

{
    parag = "";

cin >> word;

while (word != "@")
{   
    parag += word + " ";
    cin >> word;

}
parag = parag.substr (0, parag.length()-1); //Takes all characters but "@" at the end

ToLower(parag); //This code is in header file that our teacher gave us. Makes all characters lower case in order to make our code "case insensitive".

}while ( ( CheckInput(parag) ) ); // This checks inputs(obviously) if inputs are correctly entered. 

这是我上课后写的,如果有兴趣的话,学习do-while循环。计划将采取无限的&#34; cin&#34;创建一个段落。关于为什么getline(cin,parag)不能工作的用户可以写这样的东西

&#34;玫瑰红了

紫罗兰是蓝色的。 @&#34;

如您所见,句子不在同一行,而getline只需要一行作为输入。最好的部分是(请不要判断我是初学者)&#34; do&#34;如果输入错误,我可以这样说。 &#34;请再次输入您的输入&#34;我可以在不关闭我的程序的情况下接受输入,直到所有输入都正确。

休息我的作业是关于从用户那里获取段落。将段落分为句子作为用户输入(找到点)。颠倒所有句子,要求用户编写反向句子并将这些输入与程序进行比较,看看用户是否正确地给出了反向句子,如果没有说明用户做了多少错误。

答案 1 :(得分:0)

我不明白为什么你需要在阅读@字符时退出程序...但这就是你读一个句子的方式,希望这会有所帮助。

 #include <iostream>
 #include <string>

 using std::cin;
 using std::cout;
 using std::string;
 using std::getline;
 //You could do using namespace std, but that uses a lot more methods and functions 
 //that you don't need.

 int main(int argc, char* argv[])
 {
         string parag;

         cout << "Enter your sentence here: ";
         getline(cin, parag); //Get the input until the user enters a newline. 
                             //usually via pressing enter.
         cout << "\nYou entered: " << parag; //The newline escape sequence is \n
         cin.ignore(); //Pause the program until newline is received.
 }

示例输出

 $ ./OutputParag.exe
 Enter your sentence here: My input string is a sentence.

 You entered: My input string is a sentence.