相关疑难解决方法(0)

string.c_str()是const?

我在库中有一个函数,它接受char*并修改数据.

我试图给它,c_str()但c ++文档说它返回一个const char*.

除了新建一个char数组并将其复制到其中之外,我还能做些什么呢?

c++

15
推荐指数
2
解决办法
1万
查看次数

如何将 wstring 转换为 wchar_t*?C++

我想将 wstring 转换为 wchar_t*。我已经尝试了我所知道的一切,请帮忙。我想将 wstring 转换为 wchar_t*。

c++ wchar-t wstring

7
推荐指数
1
解决办法
2万
查看次数

我可以传递给函数的最大字符串长度(或大小)是多少?

我有以下功能:

int Foo(string sentence);
Run Code Online (Sandbox Code Playgroud)

我想知道我可以通过的最大字符串长度是多少?我想这应该取决于分配给功能与此字符串将被复制到堆栈中的堆栈大小,是真的吗?或者它取决于string :: max_size值?我在VS2010,windows7下使用C++

编辑.我需要有一个副本,因为该函数修改了字符串内容.

c++ string

5
推荐指数
1
解决办法
6519
查看次数

What(): basic_string::_M_construct null 无效

我正在制作一个程序,我需要使用一个将字符串的标记存储在向量中的函数。该功能无法正常工作,因此我在较小的程序上尝试了该功能。当然,我使用了字符串分词器函数。但它没有按预期工作。首先,这是代码:

#include <向量>
#include <字符串>
#include <cstring>
使用命名空间 std;

int main()
{
    矢量<字符串> v;
    字符串输入=“我的名字是阿曼库马尔”;
    
    char* ptr = strtok((char*)input.c_str(), " ");
    v.push_back((字符串)ptr);

    而(指针)
    {
        ptr = strtok(NULL," ");
        v.push_back((字符串)ptr);
    }
    cout<<"出来了";
    for(字符串 s:v)
    {
        cout<<s<<endl;
    }
}

现在问题来了。我认为这个问题与命令有关:

(string)ptr
Run Code Online (Sandbox Code Playgroud)

这个东西在第一次调用中工作得很好,但在 while 循环中出现时会出错。如果我将其注释掉并打印 ptr,那么它可以正常工作,但是程序会在 while 循环后终止,甚至不会执行

cout<<"coming out";
Run Code Online (Sandbox Code Playgroud)

不考虑向量的内容。但同样,如果我也不打印 ptr,则会打印存储在向量中的第一个令牌“My”。我确实找不到造成这种情况的原因。任何建议都会有帮助。

c++ string vector c-strings strtok

4
推荐指数
1
解决办法
1万
查看次数

如何将std :: string传递给期望char*的函数?

可能重复:
我可以从C++字符串中获取非const C字符串吗?

我需要先转换它吗?我在另一篇文章中看到,如果函数需要const char*,则可以使用.c_str().只是char*怎么样?

c++ visual-studio-2010 visual-c++

2
推荐指数
2
解决办法
2881
查看次数