正如我所说,我需要将此代码编写为我的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;
}
}
我知道这里有问题,但即使我写了“@”也不会停止。我不知道该怎么办我只是一个初学者。
答案 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.