小编Kei*_*son的帖子

如何在函数内使用cin?

我是c ++的新手,我正在尝试制作一个简单的基于文本的游戏.下面的代码应该欢迎用户加入游戏并询问用户是否想要开始游戏.我没有得到任何构建错误,但是当我运行它时,它显示的是一个空白屏幕.我究竟做错了什么?

代码如下:

string D1(string Original)
{
    cin >> Original;
    return Original;
}

int main ()
{
    string Decision1;
    cout << "Welcome to [game name]" << endl;
    cout << "Would you like to start the game?" << endl;
    cout << "Yes/No" << endl;
    string D1(Decision1);
    system("cls");
    if (Decision1 == "Yes")
    {
        cout << "this happens" << endl;
    }
    else if (Decision1 == "No")
    {
        cout << "that happens" << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ function

0
推荐指数
2
解决办法
4963
查看次数

将int转换为字符串

str2是我需要追加str1的字符串,是我追加的字符串str2.在我追加到最后,str2我需要附加一个数字(int cnt)str2.所以我使用下面的代码,它出现在我的脑海中并且正在运行.这样的代码是不对的,因为我看到了 编译器对库的抱怨的使用string s = lexical_cast<string>(a);itoa (i,buffer,10);实现.

    string str2;
    string str1;
    int cnt;
    str2 += str1 ;
    str2 += char(cnt+48);//cnt converted to ASCII char and appended;
Run Code Online (Sandbox Code Playgroud)

c++ string int

0
推荐指数
1
解决办法
110
查看次数

错误:在'Hash_Flag'之前预期','或'...'

我有一个结构,定义为

typedef struct
{
  char* p_hash_start_position;
  size_t hash_capacity;

  //still a flag is needed since we might start from an empty container.
  Hash_Flag hash_status;

  char* p_start_position;
  char* p_current_position;
  size_t capacity;//tagged data capacity
} tagged_data_t;  
Run Code Online (Sandbox Code Playgroud)

枚举定义为

typedef enum Hash_Flag
{
    TD_HASH,
    TD_NO_HASH
} Hash_Flag;
Run Code Online (Sandbox Code Playgroud)

为什么我会收到以下错误?

error: expected ',' or '...' before 'Hash_Flag'
Run Code Online (Sandbox Code Playgroud)

c++ enums struct

0
推荐指数
1
解决办法
259
查看次数

Ada.Strings.Fixed.Index_Non_Blank的行为

我在想,根据它的名字,逻辑上,这个函数将返回第一个字符的索引,而不是空格,也就是说,不是空格或制表.

不过,测试时它的一些字符串,并在它的实现寻找(文件时,A-strsea.adbGNAT 4.7.4),我意识到,实际上这个函数返回的第一个字符的索引不是一个普通的空间(ASCII 32).在我看来,这与它的名字可以设想的不一致.

那么,我在哪里可以找到此函数的预期行为(除了查看代码)?实际上,在AARMfor中Ada 2012,我只找到了原型,没有任何语义信息.

string ada

0
推荐指数
1
解决办法
181
查看次数

bash:意外令牌附近的语法错误`;&'

我正在尝试在服务器上设置git并遵循此操作.我收到这个命令的错误

mkdir .ssh &amp;&amp; chmod 700 .ssh`
Run Code Online (Sandbox Code Playgroud)

错误说:

bash: syntax error near unexpected token `;&'
Run Code Online (Sandbox Code Playgroud)

任何的想法?

linux git bash shell

0
推荐指数
1
解决办法
2492
查看次数

Ada中的多线程

我正在学习Ada,我在理解并发模型方面遇到了一些问题.以下测试应用程序应创建3个并行运行的任务,并简单地打印一系列数字.如果我没有使用任务,entry那么一切都很好,但如果我使用条目,则程序调用块并且根本不会发生并发.

我知道有可能实现互斥和同步执行,但我无法理解如何分离任务,甚至可能创建其中的几个.

q_multithreading.ads:

package Q_MULTITHREADING is

  task type TASK_LOOP is
  end TASK_LOOP;

  type TASK_LOOP_ACCESS is access TASK_LOOP;

  --===========================================================================

  task type TASK_ENTRY_LOOP is
    entry P_ITERATE(to : in Integer);
  end TASK_ENTRY_LOOP;

  type TASK_ENTRY_LOOP_ACCESS is access TASK_ENTRY_LOOP;

  --===========================================================================

  procedure P_EXECUTE_NO_ENTRY;

  procedure P_EXECUTE_ENTRY(to : in Integer);

end Q_MULTITHREADING;
Run Code Online (Sandbox Code Playgroud)

q_multithreading.adb:

with Ada.Text_IO;

package body Q_MULTITHREADING is

  V_ID_COUNTER : Integer := 1;

  --===========================================================================

  task body TASK_LOOP is

    V_ID : Integer := -1;

  begin

    V_ID := V_ID_COUNTER;
    V_ID_COUNTER := V_ID_COUNTER + 1;

    for i in …
Run Code Online (Sandbox Code Playgroud)

multithreading ada task

0
推荐指数
1
解决办法
549
查看次数

Shell - 为什么内置的RANDOM函数返回1?

今天,我发现我的shell脚本偶尔会提前退出.检查代码后,我发现这是因为set -e我的shell脚本中有一个,我使用内置函数RANDOM生成一个随机数.

使用set -e,如果脚本中的任何命令返回非零,脚本将立即退出.所以我写了一段测试代码,如下所示:

set -u
#set -e

for (( i=0; i < 100; i++ ))
do
index=$(expr ${RANDOM} % 16)
echo "RANDOM return $? , index is $index"
done
Run Code Online (Sandbox Code Playgroud)

注意评论set -e,我这样做是为了显示100输出线,其中一些RANDOM return 1确实存在.例如,我得到这样的结果:

RANDOM return 0 , index is 2
RANDOM return 0 , index is 10
RANDOM return 1 , index is 0
RANDOM return 0 , index is 9
RANDOM return 0 , index is 5
RANDOM …
Run Code Online (Sandbox Code Playgroud)

bash shell

0
推荐指数
1
解决办法
74
查看次数

C++ - int main中的argv []是否总是char*类型(如果使用argv则为char**)?

我知道,因为argc是参数的数量,它可以是一个int.但为什么应该argvchar pointer类型?这是否意味着我无法传递整数参数并argv[1]在数学运算中使用?

编辑:为了使它更清晰,是否可以写出像int* argv[].是否argv已定义为char*无法更改的类型?

c++ program-entry-point char command-line-arguments

0
推荐指数
1
解决办法
85
查看次数

为什么不允许第二种语法?

for ( declaration expressionopt ; expressionopt ) statement
Run Code Online (Sandbox Code Playgroud)

for循环的第二种语法只有一个分号,但每当我尝试使用它时,它会产生一个错误,说:

error: expected `;` before `)` token
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
56
查看次数

x ++和++ x不能在c中留下值(左值)?

偶尔,我一直在问一个有趣的问题:x++++x不能留在C值?很多人告诉我这++x不可能因为++ x的汇编代码没有返回寄存器.我对此表示怀疑.所以我做了一些实验.

c代码:

#include <stdio.h>

int main()
{
    int a = 1;
    a++ = 10; 
    ++a = 10; 
    return a;
}
Run Code Online (Sandbox Code Playgroud)

gcc编译错误:

./test.c:6: invalid lvalue in assignment
./test.c:7: invalid lvalue in assignment
Run Code Online (Sandbox Code Playgroud)

更改代码和程序集:

int a = 1;
int b = a++; 
int c = ++a; 
Run Code Online (Sandbox Code Playgroud)

汇编代码:

0x08048400 <main+0>:    push   %ebp
0x08048401 <main+1>:    mov    %esp,%ebp
0x08048403 <main+3>:    sub    $0x18,%esp
0x08048406 <main+6>:    movl   $0x1,-0x4(%ebp)
0x0804840d <main+13>:   mov    -0x4(%ebp),%eax
0x08048410 <main+16>:   mov    %eax,-0x8(%ebp)
0x08048413 <main+19>:   incl   -0x4(%ebp) …
Run Code Online (Sandbox Code Playgroud)

c c++

0
推荐指数
1
解决办法
424
查看次数