在Ubuntu终端中编译的命令是g++ scrap.c -std=c++11
我查看了其他几个有相同错误的问题,但没有使用strcat
,这是我发生异常的地方。
我尝试将所有字符从test1
复制到temp[]
,每次只有512个字符的块,但我得到一个异常Access violation reading location 0x...
。
我要做的另一件事是将温度加载到fileArray[]
的项目中,但我的代码底部的strcpy
给我no suitable conversion from str to "char *" exists
。
我努力提供一个“完整的,最小的,可验证的例子”,因为管理员现在似乎正在努力推动这个问题。如果我在这里做的话,请告诉我。你应该能够复制我的代码并用g ++编译它来检查它。
scrap.c(已更新):
//#include <stdafx.h>
//#include "stdafx.h"
#include <stdio.h> /* defines FILENAME_MAX */
#include <assert.h>
#include <iostream>
#include <fstream>
#include <cstring>
//#include <filesystem>
#include <experimental/filesystem>
#include "dirent.h"
//#include <direct.h>
using namespace std;
int main() {
string test1 = "This is test1.txt...This is test1.txt...";
std::vector<std::string> fileArray[10];
string temp = "";
for (int a = 0; a < 10; a++) {
int block = 512 * a;
int currentBlockPosition = 0;
while (currentBlockPosition < 512 && (currentBlockPosition + block) < test1.size()) {
temp += test1.at(block + currentBlockPosition);
cout << "block + currentBlockPos: " << block + currentBlockPosition << endl;
cout << "current char: " << test1.at(block + currentBlockPosition) << endl;
currentBlockPosition++;
}
temp = "";
cout << "temp: " << temp << endl;
cout << "a: " << a << endl;
//fileArray[a] = temp; // no operator "=" matches these operands ... operand types are: std::vector<std::string, std::allocator<std::string>> = std::string
}
}
答案 0 :(得分:0)
找到了解决方案。
访问冲突错误与我使用char []
而不是string
有关。
使用fileArray->push_back(temp);
证明是正确的语法,而不是fileArray[a] = temp
。
另外,我必须在while()
中添加第二个条件以避免出界限错误。