while (true)
{
cout << "Please enter a some text: ";
cin.getline( sendbuf, 100, '\n' );
i = i + 1;
if (? = "q") // here i am looking for something that if i press q i should come out of look
{
break;
}
}
我是初学者,渴望了解更多信息。我想询问是否可以通过在输入所有需要的字符串数据后输入char'q'来提供终止此循环的方法。
编辑我的sendbuf是char * sendbuf,所以我不这么认为使用std :: string会帮助我。
答案 0 :(得分:3)
不要使用char数组,使用std::string
类,您可以免费与==
进行比较:
#include <string>
std::string line;
while (true) {
cout << "Enter string: ";
std::getline(cin, line);
if (line == "q" || line == "Q") break;
}
这样,线条的大小不限于sendbuf
的大小。
如果您以后需要将数据发送到需要char*
的函数,则可以获取第一个元素的地址(&line[0]
)或只需调用line.data()
。还有size
成员函数返回,你猜对了,字符串的大小。您不会受到适用于C风格char数组的古老接口的限制。毕竟,字符串 是一个char数组。
答案 1 :(得分:0)
if ( !cin || std::strcmp( sendbuf, "q" ) == 0 ) break;
答案 2 :(得分:0)
显而易见的解决方案是使用std::string
,然后全部放入
您在while
条件下的测试:
std::string line;
while ( std::getline( std::cin, line ) && line != "q" ) {
// ...
}
在实践中,您可能希望进行更复杂的测试
line
,可能被分解为一个单独的函数。
同样,如果您总是想要提示:
std::istream&
getLineWithPrompt( std::istream& source, std::string const& prompt, std::string& line )
{
std::cout << prompt;
return std::getline( source, line );
}