鱼C论坛

 找回密码
 立即注册
查看: 1093|回复: 1

[已解决]C++ string数组和char数组问题

[复制链接]
发表于 2020-5-13 09:33:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  1. #include <iostream>  
  2. #include <string>  
  3. #include <vector>  
  4. #include <fstream>  
  5. #include <sstream>  

  6. using namespace std;

  7. int main()
  8. {
  9.         ifstream inFile("D://2.csv", ios::in);
  10.         string lineStr;
  11.         vector<vector<string>> strArray;
  12.         string array[10][10];
  13.         int i, j;
  14.         i = 0;
  15.         char* end;
  16.         if (inFile.fail())
  17.                 cout << "读取文件失败" << endl;
  18.         while (getline(inFile, lineStr))
  19.         {
  20.                 j = 0;
  21.                 // 存成二维表结构  
  22.                 stringstream ss(lineStr);
  23.                 string str;
  24.                 vector<string> lineArray;
  25.                 // 按照逗号分隔  
  26.                 while (getline(ss, str, ','))
  27.                 {
  28.                         array[i][j] = str;
  29.                         j++;
  30.                 }
  31.                 i++;
  32.                 //     strArray.push_back(lineArray);  
  33.         }
  34.         for (int i = 0; i < 10; i++)
  35.         {
  36.                 for (int j = 0; j < 10; j++)
  37.                         cout << array[i][j] <<",";
  38.                 cout << endl;
  39.         }
  40.         getchar();
  41.         return 0;
  42. }
复制代码


我想做的是比如这样
  1. if (array[i][j]='0'){
  2. …………
  3. }
复制代码

或者是
  1. if (array[i][j]=NULL){
  2. …………
  3. }
复制代码


这样要怎么办呢?可以改用char数组做getline的文件读取吗?我应该怎样修改代码呢?
最佳答案
2020-5-13 09:48:53
1. if (array[i][j]='0'  ; 这个不能直接比较的原因是,前面是一个 string,在C++是一个类,'=='符号是这个类中的符号重载,相当于string.equal()这样的调用,而==符号后面应该跟一个string , 相同的结构才可比较,你可以定义一个string a = "0"; 然后 == a 就行。
2. 在C++中有使用文件流读取文件的方式,不需要再使用getline这样的C库函数,你可以去查一下就清楚了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-13 09:48:53 | 显示全部楼层    本楼为最佳答案   
1. if (array[i][j]='0'  ; 这个不能直接比较的原因是,前面是一个 string,在C++是一个类,'=='符号是这个类中的符号重载,相当于string.equal()这样的调用,而==符号后面应该跟一个string , 相同的结构才可比较,你可以定义一个string a = "0"; 然后 == a 就行。
2. 在C++中有使用文件流读取文件的方式,不需要再使用getline这样的C库函数,你可以去查一下就清楚了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-3 13:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表