C++ C++;:常量字符*到字符串流

C++ C++;:常量字符*到字符串流,c++,C++,是否可以将const char*放入字符串流中 我认为在stringstream中使用write()函数是可能的,但是如果我只知道const char*,我就很难弄清楚如何获得streamsize 假设大小是我的常量字符*变量: stringstream s; s.write(temp,size); 我怎样才能得到尺寸?谢谢。我可能理解不正确,但我想你是在问如何获得char*字符串的大小。要做到这一点,您只需要strlen(str),它位于标题中。但是字符串必须以null结尾。我测试了它,它工

是否可以将const char*放入字符串流中

我认为在stringstream中使用write()函数是可能的,但是如果我只知道const char*,我就很难弄清楚如何获得streamsize

假设大小是我的常量字符*变量:

stringstream s;
s.write(temp,size);

我怎样才能得到尺寸?谢谢。

我可能理解不正确,但我想你是在问如何获得
char*
字符串的大小。要做到这一点,您只需要
strlen(str)
,它位于
标题中。但是字符串必须以null结尾。

我测试了它,它工作正常

#include <iostream>
#include <sstream>

using namespace std;

int main()
{
    stringstream s;
    const char* token = "HELLO";
    s << token;
    cout << s.str() << endl;
    return 0;
}

[facu@arch ~]$ g++ p.cpp 
[facu@arch ~]$ ./a.out 
HELLO
#包括
#包括
使用名称空间std;
int main()
{
细绳;
const char*token=“你好”;

我不知道这是否是回答你问题的最佳方式,但请看:

std::string _getline_ ( const char *str, const unsigned int ui_size )
{
    std::string tmp;
    unsigned short int flag = 0;
    while ( flag < 2 )
    {
    if( *str != '\0' )
    {
        tmp.push_back( *str );
        flag = 0;
    }
    else
    {
        tmp.push_back( ' ' );
        flag++;
    }
    str++;  
    }
    return tmp;
}
std::string\u getline\u(const char*str,const unsigned int ui\u size)
{
std::字符串tmp;
无符号短整型标志=0;
while(标志<2)
{
如果(*str!='\0')
{
tmp.推回(*str);
flag=0;
}
其他的
{
tmp.推回(“”);
flag++;
}
str++;
}
返回tmp;
}

问题是“flag”将不再存储“\0”中的两个…我不知道你的建议是什么…但我希望它对你有用…也许有人想修复它…

这很简单。谢谢,我不知道这是可能的。只要
char*
指向的数据是文本的(即没有嵌入空值),这就可以工作;如果数据可能具有嵌入的空值,就像在其他线程中一样,这将截断数据。确切地说,如果“字符串”包含“\0”,例如:“HELLO\0WORLD”,s将只包含“HELLO”C字符串的长度由终止空字符决定。C++中的字符串终止于空字符……因此,如果您只得到“hello World 0”,则不会出现问题……如果您证明了StrLLN(“hello \0World”),它将返回“Hello \0 World”的大小=5。,是否有一种方法可以忽略所有嵌入的空值并将整个字符串存储到流中?可以使用:const char*token=“HELLO WORLD!”s.write(token,strlen(token));