在字符常量数组中分配字符串值时遇到问题。每次将字符串值赋给字符数组的特定位置时。在字符串变量中获取新值后,数组中的位置值将初始化为空字符串。我努力想把它拿出来但是徒劳无功。以下是我正在使用的代码:
const char *array[40];
string line="";
ifstream myfile( "text.txt");
if (myfile)
{
int in=0;
while (getline( myfile, line ))
{
array[in]=line.data();
in++;
}
myfile.close();
}
else return;
现在,数组变量具有所有空字符串值。请让我知道我该怎么做?
答案 0 :(得分:0)
您正在访问string
对象line
的内部数据缓冲区,并让array[in]
指向它。当读取下一行时,此缓冲区被覆盖或可能指向不同的内存位置,以便先前写入的array[in]
指向已被新内容覆盖的内存或者根本无效。
如果要使用const char*[...]
数组,请先复制缓冲区:
array[in]= strdup(line.c_str());
进一步注意,line.data()
为您提供了一个数组但不保证最后的终止0x0。请参阅cppreference.com
string::data()
文档