while循环的迭代返回奇怪的值

时间:2019-02-28 02:28:03

标签: c++ visual-c++

我有两个问题:

假设用户在if ($nombre === "nat") 中输入的字符全部包含在===中:

  1. 如果我的$nombre = isset($_POST['name']) ? $_POST['name'] : ""; data: function(){ return{ // bind the name field of the form, for submission shared: store, description: 'tests['+this.index+'][description]', parameters: 'tests['+this.index+'][parameter]', something: 2, //some placeholder value, I am adding another variable in my actual code along with the template of the component } } , methods: { populate: function(){ var self = this.something; $.ajax({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, url:'/parametersByDescription',//this is specified in web routes type: 'POST', data: {description: self}, success: function(data){ store.parameter = data; } }) return; } } }) 开头,则我的input的第一个字符为alphabet,但是如果我以{{1 }},input是向右移3的原始字符。如果我的"A"output开头,为什么我的"A"也以{ {1}}而不是alphabet

  2. 如果我的output是带空格的字符串(例如input),为什么第一个单词是我的"A"的唯一组成部分? (计算机如何解释这一点?)我知道C ++会将换行符,空格和制表符视为空格,但是我认为如果空格位于字符串中,则将其视为字符。 如何修改代码,以便将output的其余空间和"A"包含(最好转移)?

"D"

1 个答案:

答案 0 :(得分:1)

  

如果我的输入以"A"开头,则output中的第一个字符为"A",但是如果我以字母中的任何其他字符开头,则output为原始字符向右移动3。如果我的input"A"开头,为什么我的output也以“ A”开头而不是"D"

不是。它会跳过"A",根本不会将其添加到output

这是因为std::string::find()不返回指针,而是返回索引。如果找不到匹配项,则返回std::string::npos(-1)。将NULL与索引进行比较会将NULL视为索引0。因此,当find()找到"A"时,它将返回0,然后将其与等于{{1 }}(0),因此跳过NULL添加到"D"。所有其他output个字符使input返回的索引不是0,因此它们不等于find(),因此您将所有字符(包括引起{{1 }}返回NULL,将所有这些都移到索引2)。

  

如果我的find()是带空格的字符串(例如npos),为什么第一个单词是我的input的唯一组成部分? (计算机如何解释这一点?)我知道C ++会将换行符,空格和制表符视为空格,但是我认为如果空格位于字符串中,则将其视为字符。 如何修改代码,以便将"Stack Overflow"的其余空间和output包含(最好转移)?

input读取以空格分隔的单词。它首先跳过前导空格(除非使用了output),然后读取直到遇到空格。要读取其中包含空格的字符串,请改用operator>>

话虽如此,请尝试以下方法:

std::noskipws
  

此外,当在StackOverflow上提问时,如何格式化一个变量,使它们在编写问题时处于很小的代码块中?我在其他人的帖子上看到了这一点,但我不知道该怎么做,它使事情更具可读性。

代码块可以缩进4个空格。 StackOverflow编辑器上的工具栏上有一个用于格式化代码块的按钮。只需选择代码并按下按钮即可。

其他文本的代码内联可以用引号引起来。

单击编辑器工具栏右侧的std::getline()按钮,以查看受支持的格式标记。