我是C ++的新手,我正在创建一个分解IP地址并将值放在“。”之间的函数。排列成一个数组。我收到此错误:
Assigning to 'std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::value_type' (aka 'char') from incompatible type 'std::__1::basic_string<char>'
我在做什么错了?
// main.cpp
// Subnet calculator
#include <iostream>
using namespace std;
string ip2arr(string ehh, string arr);
int main(void){
}
string ip2arr(string ehh, string arr){
ehh+=".";
int list_counter = 0;
for (int i = 0, f = 0; i < ehh.length(); i++) {
if (ehh[i] == '.') {
arr[list_counter] = ehh.substr(f,i-1-f+1);
list_counter++;
f = i+1;
}
}
}
答案 0 :(得分:1)
该错误似乎发生在行上
arr[list_counter] = ehh.substr(f,i-1-f+1);
在这里,arr
是一个字符串,因此arr[list_counter]
是一个字符。但是,您尝试将ehh.substr(f,i-1-f+1)
的结果分配给它,它是一个字符串。
我无法建议您如何解决此问题,因为我不确定您要做什么。请注意,还有另一个问题:您正在尝试为通过值传递给函数的参数分配值。这不会影响调用函数中变量的值。您最有可能应该在函数中建立结果并为return
建立一个值,而不是更改其参数的值。
答案 1 :(得分:1)
我在做什么错了?
好吧,让我们开始
std::string
,但是您缺少#include <string>
指令std::string
,但没有return语句arr
,但不使用它,而是尝试为其分配值arr
中的元素而不检查索引是否有效std::string
分配给类型char
的左值signed int i
与std::string::length()
返回的无符号值进行比较我希望我什么都不会错过