c++ - p 周围的堆栈已损坏 c++

标签 c++ string char

这一定很简单,但我现在 NumPy 了,无法清楚地思考。 所以这是我代码的一小部分,除此之外一切正常。 我真正想做的是 infile1.open(temp2->path);但这是不可能的,因为 temp2 是一个字符串。所以我想把这个字符串放入一个像 char p[100] 这样的 char 数组中以使用 infile1.open(p)。它编译但在几秒钟后繁荣: p 周围的堆栈已损坏

   char p[100];
   while( temp2 != 0)
   {
        stringToCharArray(temp2->path, p); 
        infile1.open(p);
        checkingWords(infile1, stopWords, invertedIndex);
        infile1.close();
        temp2 = temp2->next;
   }


void stringToCharArray(string s, char *c)
{
    int i;
    int size = s.size();
    for( i=0; i<=size ; i++)
    {
        c[i] = s[i];
    }
}

最佳答案

我相信你想要 std::string::c_str .

infile1.open(temp2->path.c_str());

(请注意,此 const char * 仅在您下次更改您从中获取的 std::string 中的内容时有效,在本例中为 temp2->path)。

看起来您现有代码的主要错误是 for( i=0; i<=size ; i++)应该是 i<size .但我们不要太详细地讨论它,因为无论如何你都不应该这样做。

关于c++ - p 周围的堆栈已损坏 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16064725/

相关文章:

c - 使用 3 个字符生成 200 个唯一的 40 个字符的字符串

c++ - 如何将比较运算符应用于两个匿名结构中的每个变量?

c++ - C++ lambda 表达式可以抛出吗?

c++ - 如何使用 avx 指令将 float vector 转换为 short int?

c - 使用运行时设置的变量来指定字符数组的大小

c - 将新值分配给 char* 变量时发生访问冲突

c++ - 集的静态constexpr

Mysql搜索每个单词

c - C 中的安全函数是否比不安全的函数更快,反之亦然?

c# - 为什么 char 数组在控制台上显示内容,而 string 和 int 数组不在 c# 中?