我有一个变量,即字符串temp
;
temp
的值是一些字符串,它处于一个循环中,值不断变化。
我需要使用变量:
备份temp
变量中的字符串
char asset[8][256]
我尝试使用:
strncpy(&asset[8][256], temp.c_str(), 256)
但它仍然无法奏效。我做错了什么?
答案 0 :(得分:0)
你说你写了一个循环,但是如果你每次写入同一个(非法的)地址,你应该如何使用这段代码?
循环应该如下所示:
for (int i = 0; i < 8; ++i)
{
//...
strcpy(&asset[i][0], temp.c_str(), 256);
//...
}
您要写信至&asset[0][0]
,&asset[1][0]
,&asset[2][0]
等。写入&asset[8][256]
开始在该位置[8][256]
写入字符串,超出范围。
其次,如果你想要&#34;备份&#34;字符串,你为什么使用数组?为什么不是std::vector<std::string>
而只是push_back
要备份的值?
#include <vector>
//...
std::vector<std::string> asset;
std::string temp;
//...
asset.push_back(temp); // backs up temp.
这不仅更容易,您不限于8个字符串,并且不存在缓冲区溢出的可能性。