我不理解这个c++错误,但我需要帮助修复它
I do not understand this c++ error but I need help fixing it
我正试图编写一个计算给定字符串中单词数的函数,但每次编译代码时都会收到错误消息。
**The error message**: lab4.cpp: In function ‘int NumWords(const string&)’:
lab4.cpp:98:17: error: cannot bind ‘std::basic_istream<char>’ lvalue to ‘std::basic_istream<char>&&’
while (inSS >> str) {
^
In file included from /usr/include/c++/4.8.2/iostream:40:0,
from lab4.cpp:9:
/usr/include/c++/4.8.2/istream:872:5: error: initializing argument 1 of ‘std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&&, _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = const std::basic_string<char>]’
operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x)
^
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
//功能原型
int NumWords(const string&);
int NumNonWSCharacters(const string&);
void CharReplace(string&, char, char);
char PrintMenu();
//主要功能
int main () {
//Variables
string text;
//Input & Output original
cout << "Enter a line of text: ";
getline(cin, text);
cout << "n";
cout << "You entered: " << text << "n";
//How many words
cout << NumWords(text) << "n";
}
//统计字符串中的字数
int NumWords(const string& str) {
int count = 0;
istringstream inSS(str);
while (inSS >> str) {
count++;
}
return count;
}
//计算字符串中的字符数(不包括空白(
int NumNonWSCharacters(const string&) {
cout << "f";
}
//将给定字符串中的一个字符替换为另一个字符
void CharReplace(string&, char, char) {
cout << "FINISHn";
}
//打印菜单
char PrintMenu() {
cout << "FINISHn";
}
您的NumWords函数出现问题
int NumWords(const string& str) {
int count = 0;
istringstream inSS(str);
while (inSS >> str) { // RIGHT HERE
count++;
}
return count;
}
您正试图使用const参数str
作为接收inSS >> str
流输出的变量。由于它是const,inSS
无法写入它。这就是编译器所抱怨的。只需使用一个临时变量就可以解决这个问题。
int NumWords(const string& str) {
int count = 0;
istringstream inSS(str);
std::string tmp; // dummy string
while (inSS >> tmp) { // string into tmp
count++;
}
return count;
}
此外,NumNonWSCharacters
和PrintMenu
函数缺少返回值。这应该是一个简单的解决方案。
相关文章:
- 不理解为什么代码没有产生所需的答案
- 有人可以帮助我理解这些参数/参数吗?
- C++我不理解的行为
- 需要帮助来理解我的任务的 QRegularExpression
- Visual Studio代码不理解CMake-DDEBUG
- 调试套接字 c++ 代码并帮助我理解
- Stroustrup的C++书挑战赛,有人可以帮助我理解这段代码吗?
- 不理解此递归函数中的返回 (C++)
- 我需要一些帮助来理解一些涉及C++链表的代码
- 康威的生命游戏帮助我理解这个意想不到的输出
- 不理解将 .pb 转换为 ff-lite 时的平均值和标准开发值
- 不理解给定代码的输出
- 不理解连续数字之间的空格代码
- 需要一些帮助来理解类继承(C++)
- C ++帮助我理解为什么没有输出
- 将get_word转换为功能,不理解说明?
- 不理解 VS 中 HelloWorld 的错误,当包含std_lib来自 Stroustrup 的书时
- C++函数问题 = 帮助我理解基本概念
- 我不理解这个dfs实现的语法
- 请帮助我理解为什么SFINAE在这种情况下不起作用