strtok()与空格分隔符的问题

时间:2016-07-02 09:14:09

标签: c++

我试图用空格分隔符破坏一个字符串,但它不起作用,与“,”一样,它工作正常。谁能帮我这个。以下是我的代码。

char x[150];
int a[150];
cin >> x;
int i = 0;
char * pch;

pch = strtok(x, " ");
while (pch != NULL)
{
    a[i] = atoi(pch);
    cout<< a[i]<<"\t";
    pch = strtok (NULL, " ");
    i++;
}

输入:12 23 50

输出:12

使用逗号分隔符输出:12 23 50

1 个答案:

答案 0 :(得分:1)

您的问题是var crudServiceBaseUrl = "http://localhost:8090/hr"; var countryDataSource = new kendo.data.DataSource({ transport: { parameterMap: function(options, operation) { if (operation !== "read" && options.models) { return { models: kendo.stringify(options.models) }; } }, read: { url: crudServiceBaseUrl + "/countries", dataType: "jsonp" }, update: { url: crudServiceBaseUrl + "/countries/Update", dataType: "jsonp" }, destroy: { url: crudServiceBaseUrl + "/countries/Destroy", dataType: "jsonp" }, create: { url: crudServiceBaseUrl + "/countries/Create", dataType: "jsonp" } }, schema : { data : "items" }, model: {id : "CD_CONT", fields: { CD_CONT : { type: "string",editable : false}, NAME_CONT : { type: "string",editable : true,nullable : false}, CONTINENT : { type: "string",editable : true,nullable : true} } } }); var continentDataSource = new kendo.data.DataSource({ data: [ { continent:"1",name:"asia"}, { continent:"2",name:"europ"}, { continent:"3",name:"america"} ] }); $('#grid).kendoGrid({ toolbar: ["create","save", "cancel",], columns: [ { field: "CD_CONT" , title: "Cd cont" }, { field: "NAME_CONT" , title: "Name cont" }, { field: "CONTINENT" , title: "Continent", editor: function ContinentDropDown(container, options) { $('<input data-text-field="name" data-value-field="continent" data-bind="value:' + options.field + '"/>') .appendTo(container) .kendoDropDownList({ dataSource: continentDataSource, dataTextField: "name", dataValueField: "continent" }); } } ], dataSource: countryDataSource , editable: "inline" }); 仅在第一个空格之前为您提供输入。

因此,即使您输入cin >> x;,您也只会获得12 23 50

其余输入仍保留在12中。因此,如果您执行了cin三次,您将获得cin >> x12以及23

要阅读整行,请改用50。见Reading a full line of input

但是(正如几条评论中所建议的)使用std::getline并不好。您还应该使用strok而不是char-array。

要拆分字符串,请参阅Dieter Lucking Split a string in C++?提供的链接。