wuliaaa 发表于 2020-5-13 09:33:31

C++ string数组和char数组问题

我想问问这个我的这个代码,写了string二维数组用于数据读取,但是后面想要用数组里的内容进行比较,比如里面的一个字符串是否和数组外的另一个字符串相等,但好像会提示string数组不能和char比对,这个我要怎么修改代码呢?

#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
        ifstream inFile("D://2.csv", ios::in);
        string lineStr;
        vector<vector<string>> strArray;
        string array;
        int i, j;
        i = 0;
        char* end;
        if (inFile.fail())
                cout << "读取文件失败" << endl;
        while (getline(inFile, lineStr))
        {
                j = 0;
                // 存成二维表结构
                stringstream ss(lineStr);
                string str;
                vector<string> lineArray;
                // 按照逗号分隔
                while (getline(ss, str, ','))
                {
                        array = str;
                        j++;
                }
                i++;
                //   strArray.push_back(lineArray);
        }
        for (int i = 0; i < 10; i++)
        {
                for (int j = 0; j < 10; j++)
                        cout << array <<",";
                cout << endl;
        }
        getchar();
        return 0;
}

我想做的是比如这样
if (array='0'){
…………
}
或者是
if (array=NULL){
…………
}

这样要怎么办呢?可以改用char数组做getline的文件读取吗?我应该怎样修改代码呢?

上善若水··· 发表于 2020-5-13 09:48:53

1. if (array='0'; 这个不能直接比较的原因是,前面是一个 string,在C++是一个类,'=='符号是这个类中的符号重载,相当于string.equal()这样的调用,而==符号后面应该跟一个string , 相同的结构才可比较,你可以定义一个string a = "0"; 然后 == a 就行。
2. 在C++中有使用文件流读取文件的方式,不需要再使用getline这样的C库函数,你可以去查一下就清楚了。
页: [1]
查看完整版本: C++ string数组和char数组问题