C++ 将字符串"buffer"复制到矢量<矢量>时出现问题<string>



我是c++的新手,我对可用的类结构有点不知所措,我没有不同库的经验,因此我试图找出用于基本任务的最佳结构。

我试图创建一个读取文件并将其复制到工作结构的函数,我首先尝试在没有任何类或对象的情况下,不可能返回一个指向char*[][]结构的有效指针(不知道这是否是最好的继续方式),所以我试图提出另一个基于vector的解决方案我在某个地方捡到的代码,希望它可以这样工作。

下面是我想弄明白的代码。

void readFile2(FILE* f) {
string buf = "abc";
int a = countLine(f);
int b = countCol(f);
long bytes;
char c;
int d = 0;
fseek(f, 0L, SEEK_END);
bytes = ftell(f);
fseek(f, 0L, SEEK_SET);
int x,y = 0;
vector<vector<string> > vec;
for (int i = 0;i<a;i++) {
vector<string> v1;
for (int j = 0;j<b;j++) {
v1.push_back(buf);
}
vec.push_back(v1);
}
buf.erase();
for (int i=0;i<bytes;i++) {
c = fgetc(f);
if (c == 't') {
cout<<"buf : "<<buf<<endl;
***cout<<"vec : "<<vec[y][x]<<endl;***
d = 0;
y += 1;
buf.erase();
} else if (c == 'n') {
cout<<"buf : "<<buf<<endl;
**cout<<"vec : "<<vec[y][x]<<endl;**
d = 0;
x += 1;
y = 0;
buf.erase();
} else {
buf.push_back(c);
d++;
}
}

问题:

  1. 向量[y][x]我试图用函数第二部分缓冲区中的字符串填充(在上面代码中的星号之间)不显示任何东西,尽管它在代码的初始化部分期间正确地初始化了字符串元素。

  2. strcpy(vec[y][x],但是)(这里不存在)也不工作,因为它需要char*指针(对于以str命名的函数来说很奇怪,因此我有点卡住了,因为不知道该使用什么,也不知道结构是否正确。

  3. 我试图设计函数返回一个有效的指针,可以由另一个函数在main()中使用的向量,我不知道,但如果它是正确的方式或最有效的方式来加载内存中的文件,并生成一个数组结构。

感谢您的宝贵时间。

一个非常直接的c++的全新版本。你的代码基本上是c代码

#include <string>
#include <fstream>
#include <vector>
#include <sstream>
int main() {
std::ifstream input("test.txt");
std::vector<std::vector<std::string>> fields;
int count = 0;
while (input) {
std::string line;
std::getline(input, line);
std::stringstream strs(line);
fields.push_back(std::vector<std::string>());
while (strs) {
std::string field;
std::getline(strs, field, 't');
fields[count].push_back(field);
}
count++;
}

for (auto& l : fields) {
for (auto& f : l) {
std::cout << f;
}
std::cout << "n";
}
}

最新更新