use*_*464 1 c c++ parsing buffer
我想检查一下用户是否?在缓冲区的末尾添加了一个.如果没有,我希望程序自动添加一个.这就是我到目前为止所拥有的.我不知道接下来该做什么.
首先,我检查缓冲区是否为空白.
然后,如果最后一项不是a ?,则将问号自动添加到缓冲区,然后将内容复制到当前数据节点.
if ( strlen(buffer) != 0)
{
if (buffer[strlen(buffer)-1] != '?')
{
//what do i put here to add the ? if theres non?
}
strcpy(current->data,buffer);
}
Run Code Online (Sandbox Code Playgroud)
从我所看到的,你不会buffer以这种方式修改任何东西.你可以简单地添加?到current->data,如果它是需要的.
int len = strlen(buffer);
strcpy(current->data, buffer);
if (len && buffer[len-1] != '?') {
current->data[len] = '?';
current->data[len+1] = '\0';
}
Run Code Online (Sandbox Code Playgroud)
如果是一个选项,您应该考虑更改要使用的代码std::string.
std::string buffer = input();
if (!buffer.empty() && buffer.back() != '?') buffer += '?';
std::copy(buffer.begin(), buffer.end(), current->data);
current->data[buffer.size()] = '\0';
Run Code Online (Sandbox Code Playgroud)
如果您没有C++ 11编译器,请使用*buffer.rbegin()而不是buffer.back().