我试着做一个使用getchar()从标准输入中读取短行的函数。 该函数本身确实运行良好,但是当我在while循环中将其用作哨兵的一部分时,总会收到一个错误,简而言之,即它无法从字符串转换为bool。

#include <iostream>
#include <stdio.h>
using namespace std;
string myReadLine();
int main()
{
string str = "";
while ((str = myReadLine()) != NULL) { //eof, and any expression of that sort

cout << str << endl;

}
    return 0;
}




string myReadLine() {
string line =  "";
char singleSign;

while ((singleSign=getchar()) != '\n') {
line = line + singleSign;

}
return line;
}

我究竟做错了什么? 多谢您的协助!


问题2:您如何看待myReadLine()函数的效率? 可以吗

===============>>#1 票数:2

如您所说,您不能将字符串转换为布尔值。 我建议:

str = myReadLine();
while (!str.empty())                                         
{
  cout << str << endl;
  str = myReadLine();
}

===============>>#2 票数:1

在这一行中(假设您错误地在其中键入了一个额外的括号):

while (str = myReadLine() != NULL)

str = myReadLine()之前先评估myReadLine() != NULL 这就是为什么说str不能转换为bool

将括号放在str = myReadLine()周围,​​它应该可以工作。

while (str = myReadLine()) != NULL)

===============>>#3 票数:0

类字符串实例与NULL的比较不正确。 您可以使用指针执行此操作。

这是执行此操作的下一个最佳方法:

#include <iostream>
#include <stdio.h>
using namespace std;
bool myReadLine(string& line);
int main()
{
string str = "";
while (myReadLine(str)){

cout << str << endl;

}
    return 0;
}


bool myReadLine(string& line) {
char singleSign;
line = "";

while ((singleSign=getchar()) != '\n') {
line = line + singleSign;

}
return line == "" ? false : true;
}

  ask by musztard2000 translate from so

未解决问题?本站智能推荐:

3回复

C ++:从stdin读取字符串的最快方法

我们可以通过操作如下字符来使用getchar_unlocked从stdin快速读取整数: 有没有办法使用上述类似的方法从stdin快速读取字符串? gets比cin / scanf更快,但同时拥有对空格的严格处理。 我考虑过修改上面的字符串代码,但是遇到空格问题。 此外,似乎逐一读
2回复

Python 3中是否有内置函数,例如C ++中的getchar()?

我想在python中进行用户输入,这类似于c ++中使用的getchar()函数。 C ++代码: 输入:堆栈溢出 输出:堆栈 在上面的代码中,当用户输入的空格比循环中断时。 我想像我在C ++代码中使用的那样,使用getchar()类型函数在python中执行此操作
3回复

从c中删除字符串中的标点符号和空格?

这是在学校的家庭作业。 我不是要求正确的答案只是推动正确的方向。 关于为什么会出错的解释将是很好的以及对正确方法的解释。 这个C程序应该做的是读取没有空格和标点符号的用户输入并将其分配给字符数组字符串。 然后应该将该数组传递给函数回文。 Palindrome应该是字符串的长度,如果等于
3回复

在C中每循环迭代读取三个字符?

这对我来说毫无意义,但希望你们其中一个人明白为什么要这样做。 我有一个赋值,需要用getchar()读取三个字符,因为彼此相邻的三个整数彼此相关,所以我设置了一个循环结构如下: 问题是如果字符数不能被3整除,则不执行最后一次迭代。 因此,如果输入了字符“Abcd”,它将在Abc上
1回复

为什么getchar()不会停止在C语言中读取字符串?

我希望用户能够输入数字n,然后程序将从用户那里读取n个字符串。 但是现在程序不会停止读取字符串。
3回复

无法从用户那里获得输入来代替代码中输入的手动字符串

我正在尝试运行一个程序,该程序基本上需要一个输入字符串,并通过一些代码发送它,并使用链接列表按字母顺序对其进行排序。 我已经弄清楚了如何使用手动(在实际代码中)文本输入来完成这项工作,但是当我试图从用户那里获取输入时,我无法使其工作。 查看主函数,我可以确定它与getchar有关,并且
1回复

C中的getchar()麻烦

我有一个交流程序,在程序执行期间我要求用户输入两次。 第一次输入函数(我自己的函数)运行良好,但是第二次getchar()函数似乎无法运行。 我自己调查了问题,发现了与尾随字符有关的内容,但是我仍然对问题感到困惑。 我尝试创建第二个函数,如果给定的输入是\\ n,该函数会不断询问输入,并且我还尝试使
1回复

C中跳过了getchar()和scanf()[重复]

这个问题已经在这里有了答案: scanf跳过[重复] 1个答案 我目前正在编写一个程序,它将一个文件的文本复制或追加到另一个文件中。 当提示用户是否要覆盖或附加文件时,出现了我的问题,scanf()和getchar()都被跳过了。 我尝试使用getchar()和
2回复

从C中的getchar()获取一个大的int?

我正在读取一个'$'分隔值的文件,如W $ 65345 $ 23425,并且一直使用getchar()来获取值(而n = getchar()!='$')等等。 当我得到第二个值时,我创建一个整数列表并用getchar()填充该列表,所以我很确定我有一个[6,5,3,4,5]的列表。 如何将其
1回复

如何让getchar()得不到我之前做的ENTER?(在C中)

这就是问题:我必须阅读一堆数字(学生的成绩),计算他们的平均值,如果平均值低于70,我必须将一个因子应用到等级(等级曲线)+ x或* x然后打印班上学生的数量和平均水平。 我已经编写了整个代码,但我的问题是,在我完成输入numbres并且我需要输入因子公式后,它会跳过因子应该读取输入的部分,就