我在做一个程序,我需要使用一个函数,它存储一个向量中的字符串的标记。这个函数不能正常工作,所以我在一个较小的程序上尝试了这个函数。当然,我使用了字符串标记器函数。但它并不像预期的那样工作。首先,代码如下:
#include <vector> #include <string> #include <cstring> using namespace std; int main() { vector<string> v; string input = "My name is Aman Kumar"; char* ptr = strtok((char*)input.c_str(), " "); v.push_back((string)ptr); while(ptr) { ptr = strtok(NULL," "); v.push_back((string)ptr); } cout<<"Coming out"; for(string s:v) { cout<<s<<endl; } }
现在的问题。我认为问题与命令有关:
(string)ptr
它在第一个调用中工作得很好,但在while循环中出现时会出错。如果我把它注释掉并打印ptr,那么它可以正常工作,但是程序在while循环之后终止,甚至不执行
cout<<"coming out";
不要理会向量的内容。但是,如果我不打印ptr,那么存储在向量中的第一个令牌“my”将被打印出来。我真的找不到是什么导致了这一切。任何建议都是有帮助的。
在
while(ptr)
{
ptr = strtok(NULL," ");
v.push_back((string)ptr);
}
对于最后一个标记PTR
将为null,从空指针构造std::string
是未定义的行为。尝试:
while(ptr = strtok(NULL," "))
{
v.push_back(string(ptr));
}
对于更多的C++解决方案:
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
int main()
{
std::vector<std::string> v;
std::string input = "My name is Aman Kumar";
std::stringstream ss(input);
std::string word;
while(ss >> word)
{
v.push_back(word);
}
std::cout << "Coming out\n";
for(std::string& s:v)
{
std::cout << s << "\n";
}
}
is What 是一个非常简单且小巧的 JS 类型检查功能,它同样完全支持 TypeScript npm i is-what 用法 is-what 很容易使用,并且大多数功能都可以像你所期望的那样工作。 // import functions you want to use like so:import { isString, isDate, isPlainObject } from 'is-wh
Masonry is a JavaScript grid layout library. It works by placing elements in optimal position based on available vertical space, sort of like a mason fitting stones in a wall. You’ve probably seen it
Reading this tutorial has probably reinforced your interest in using Python -- you should be eager to apply Python to solve your real-world problems. Now what should you do? You should read, or at lea
Prettier is an opinionated code formatter with support for: JavaScript, including ES2017 JSX Angular Vue Flow TypeScript CSS, Less, and SCSS HTML JSON GraphQL Markdown, including GFM and MDX YAML It r
问题内容: 我从数据库函数返回字符串或NULL到主程序,有时会从异常中得到此错误: 我认为这是因为从数据库函数返回NULL值?有任何想法吗??? 问题答案: 您不能从声明为要返回的函数中返回(或),因为没有适当的隐式转换。您可能想返回一个空字符串 要么 如果要能够区分一个值和一个空字符串,则必须使用指针(最好是智能指针),或者可以使用
问题内容: 什么 duck typing? 问题答案: 这是动态语言中没有强类型输入的术语。 这个想法是您不需要类型来调用对象上的现有方法-如果在对象上定义了方法,则可以调用它。 该名称来自短语“如果它看起来像鸭子,而象鸭子一样叫,那就是鸭子”。 维基百科有更多信息。