C++ 添加字符串的空结尾

C++ 添加字符串的空结尾,c++,string,null,strtok,C++,String,Null,Strtok,我有一个字符串声明为char语句[100]; 在一个循环中,我从一个txt文件中读取不同的句子,并尝试这样做: sentence = strtok (sentencefromtxtfile," ,.-"); //seperating word by word in a loop 我能做到。但是有一个小问题。假设SentRecenFromTXTFile的长度仅为10。例如: sentencefromtxtfile=“John”->如果为空,则为5个字符。但是strtok函数无法注意到空ch。因此

我有一个字符串声明为char语句[100]; 在一个循环中,我从一个txt文件中读取不同的句子,并尝试这样做:

sentence = strtok (sentencefromtxtfile," ,.-");
//seperating word by word in a loop
我能做到。但是有一个小问题。假设SentRecenFromTXTFile的长度仅为10。例如:

sentencefromtxtfile=“John”->如果为空,则为5个字符。但是strtok函数无法注意到空ch。因此我的句子变量如下:

John ÿ( ÕŒ•vÍ>È àı~øş( j (total 100 char)

那我该怎么解决呢?我的意思是,我可以调整句子的长度吗?因为它是fix和100。。无论如何,为我的愚蠢的英语道歉。我希望你们明白我的意思?提前感谢。

在填充缓冲区之前,您可以使用
\0
字符预先填充缓冲区,方法是发出:

char sentencefromtxtfile[100] = { 0 };

这应该可以解决您的问题,因为所有未触及的字符
strtok()
都将
NUL

在填充缓冲区之前,您可以通过发出以下命令预先填充
\0
字符:

char sentencefromtxtfile[100] = { 0 };

这应该可以解决您的问题,因为所有保持不变的字符
strtok()
都是
num
char[100]
是一个100个字符的数组,而不是一个字符串。您可以考虑使用<代码> STD::String 。

<代码> char(100)< /Cord>是一个100字符的数组,不是字符串。您可以考虑使用<代码> STD::String 。

<代码> Strtok < /Cord>处理空终止符就行了。您的代码实际上是什么样子的?您不应该覆盖
语句
,因为这是指向数组的唯一指针。相反,使用一个新指针,
char*p=strtok(句子“…”)
strtok
可以很好地处理空终止符。您的代码实际上是什么样子的?您不应该覆盖
语句
,因为这是指向数组的唯一指针。相反,使用一个新指针,
char*p=strtok(句子“…”)hel。然后,也许我可以使用字符串的长度来剪切字符串……这是可以实现的,但对于这种抽象级别,您可能应该使用
std::string
而不是字符数组,正如Daniel Daranas正确地建议的那样。此外,我在最初的回答中错误地使用了
句子而不是
句子fromtfile
(我们需要预先填充原始缓冲区,而不是由strtok()返回的指针。
)。也许这就是问题所在。它们不起作用。我想知道VB中是否有类似mid()的函数?你知道;mid(“hello”,1,3)=>hel.那么也许我可以使用字符串的长度来剪切字符串……这是可以实现的,但是对于这种抽象级别,您可能应该使用
std::string
而不是字符数组,正如Daniel Daranas正确地建议的那样。此外,我在原始答案中错误地使用了
句子而不是
句子fromtfile
(我们需要预先填充原始缓冲区,而不是由
strtok()
返回的指针)。可能这就是问题所在。