我已经阅读了有关此功能的大部分已回答的问题,但我想现在为什么我的代码会打印令牌而又会破坏。我应该使用这个函数从只有var app = angular.module('app_name');
var isEmpty = true;
app.controller("bankDetailsController", [ "$scope", "$http", "config", "$mdToast", function($scope, $http, config, $mdToast) {
$scope.bankDetails = {};
$scope.transactionTypes = {
NEFT : "NEFT",
IMPS : "IMPS",
WALLET : "WALLET",
};
$scope.getBankDetails = function() {
$http.get(config.webServicesUrl.bankDetails, headerConfig).success(function(data) {
if (data.body) {
$scope.bankDetails.transactionTypes = $scope.transactionTypes.IMPS;
isEmpty = false;
}
}).error(function(error) {
console.log("Error : " + error.error);
});
};
}]);
分隔符的字符串中提取标记并对它们进行一些操作,但是我首先尝试打印标记,如果这样可以完美地工作,那么修改令牌。这没有发生......
我在Visual Studio 2015中编写了由帮助查看器引导的代码:
' '
我在控制台中得到了这个结果,这让我很开心:
但是,我也收到了这个错误,一个名为#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
int main()
{ char s[50] = "testing the strtok_s function", *token = NULL, *next_token = NULL;
// Establish string and get the first token:
token = strtok_s(s, " ", &next_token);
cout << token << '\n';
// While there are tokens in s:
while (token != NULL)
{ //Get the next token:
if (token != NULL)
{ token = strtok_s(NULL, " ", &next_token);
cout << token << '\n';;
}
}
}
的窗口弹出,一个箭头指向一行,可能解释了原因:iosfwd
这是错误窗口:
答案 0 :(得分:1)
在token
返回后,您使用cout
作为strtok_s
的输入参数,而不测试它是否为空。
这不安全,可能是您崩溃的原因。
请尝试以下方法:
while (token != NULL)
{
cout << token << '\n';
token = strtok_s(NULL, " ", &next_token);
}
通过这样做,您可以删除对cout
的第一个电话。
答案 1 :(得分:0)
关于代码中的以下两行:
token = strtok_s(NULL, " ", &next_token);
cout << token << '\n';;
当strtok_s
()返回NULL表示没有更多的标记要从字符串中检索时,你能尝试向your rubber duck解释这里发生了什么吗?