当我尝试通过 push_back() 添加字符串的特定字符时,它抛出一个类型转换错误
When I attempt to add a specific character of a string through push_back() it throws me a type conversion error
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
string input;
getline(cin, input);
int x = input.length();
vector<string> arr;
for(x; x==0; x-2){
arr.push_back(input[x]);
}
return 0;
}
我尝试编译时出现以下错误:
simplearraysum.cpp:16:23: error: reference to type 'const std::__vector_base<std::string, std::allocator<std::string> >::value_type' (aka 'const std::string') could not bind to an lvalue of type 'std::basic_string<char>::value_type' (aka 'char')
arr.push_back(input[x]);
谁能给我一些建议?
代码中有几个错误导致失败;最重要的是 for 循环的第三部分:x-2
计算减法的结果,然后继续。它永远不会存储在任何地方,所以 x 永远不会改变。循环永远运行,一遍又一遍地插入 input[x]
到向量中,直到出现问题。您可能想使用:x = x-2
.
第二个问题是如果 x 是奇数 - 减去 2 永远不会恰好为零,因此循环将再次永远不会停止。您应该使用 x>=0
或类似的条件。
三、input[x]
是char,不是string;向量需要字符串。这就是显示的错误消息所说的内容。
第四,如果 x 是字符串的长度,input[x]
访问字符串后面的字符 - 在 C 和 C++ 中,索引从 0 开始,所以 x 个字符的数组来自 arr[0]到达 [x-1].
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
string input;
getline(cin, input);
int x = input.length();
vector<string> arr;
for(x; x==0; x-2){
arr.push_back(input[x]);
}
return 0;
}
我尝试编译时出现以下错误:
simplearraysum.cpp:16:23: error: reference to type 'const std::__vector_base<std::string, std::allocator<std::string> >::value_type' (aka 'const std::string') could not bind to an lvalue of type 'std::basic_string<char>::value_type' (aka 'char')
arr.push_back(input[x]);
谁能给我一些建议?
代码中有几个错误导致失败;最重要的是 for 循环的第三部分:x-2
计算减法的结果,然后继续。它永远不会存储在任何地方,所以 x 永远不会改变。循环永远运行,一遍又一遍地插入 input[x]
到向量中,直到出现问题。您可能想使用:x = x-2
.
第二个问题是如果 x 是奇数 - 减去 2 永远不会恰好为零,因此循环将再次永远不会停止。您应该使用 x>=0
或类似的条件。
三、input[x]
是char,不是string;向量需要字符串。这就是显示的错误消息所说的内容。
第四,如果 x 是字符串的长度,input[x]
访问字符串后面的字符 - 在 C 和 C++ 中,索引从 0 开始,所以 x 个字符的数组来自 arr[0]到达 [x-1].