我输入一个包含无符号32位int的值,我想读取第19位.我该怎么做?
这是我想要读取的输入:
uint32 Input = u32AHI_DioReadInput();
int x = ???
Run Code Online (Sandbox Code Playgroud)
我尝试使用Input(19),input[19]但我没有工作,因为第一个是一个功能,第二个被认为是一个数组.我知道我应该和一些比特并改变他们,但我只是不知道我该怎么做.
我有这个代码:
string a = "D:\\Users\\user-pc\\Desktop\\testing\\a.txt";
ifstream f;
/*edit*/ string line;
/*edit*/ getline(f, line);
f.open(a);
if ( f.eof() )
cout << "ended";
else
cout << "nope"
Run Code Online (Sandbox Code Playgroud)
以及文件“a.txt”,其中没有任何内容。
输出是“不”,总是“不”。我不明白。。我用错了吗?
编辑:仍然 .eof() 不起作用
为什么std::unique_ptr包含删除函数签名作为模板定义的一部分有什么原因?
template<class T, class Deleter = std::default_delete<T>> class unique_ptr;
Run Code Online (Sandbox Code Playgroud)
VS
template< class T > class shared_ptr;
Run Code Online (Sandbox Code Playgroud) 在访问向量元素时,使用at和括号之间是否有任何区别[]?
我看到同样的人喜欢myvector.at()上面myvector[],是否有一些东西使它更优选,如在某些情况下更好的表现,或与其他一些语言共同?
我知道参数的默认参数值不能是另一个参数的值.例如
void foo( int a, int b = a );
Run Code Online (Sandbox Code Playgroud)
显然,b的默认值不是编译时常量,但在我看来,编译器可以生成代码来执行此操作.
我敢肯定有一个很好的理由不允许这个,我想知道它是什么?
我正在尝试创建一个代码,通过csv数据库解析库存信息.目前,我已生成代码,以便它将使用关键字进行搜索并打印整行,但我正在尝试获取它,以便以整齐格式化的方式打印带有标题行的整行.
我试图得到它,以便如果我搜索谷歌,它会回来
Symbol GOOG
NAME Google Inc
今日高位$ 568.77
csv如何看起来像:
符号,名称,价格,今日高点,今日低点,52周低点
Google,Google Inc.,$ 568.77,$ 570.25,$ 560.35
AAPL,Apple Inc.,$ 93.28,$ 63.89,$ 99.44.
码:
string NameSearch::getInput()
{
cout << "Enter the name of the company you would like to search for: ";
getline(cin, input);
return input;
}
void NameSearch::NameAlgorithm()
{
string line;
ifstream fs("Stock Database.csv");
while (!fs.eof())
{
getline(fs, line);
string companyname = "";
string a;
int column = 1;
int commacount = 0;
int ChrCount = 0;
while (line != "\0") …Run Code Online (Sandbox Code Playgroud) 在我的第一个小项目中,我是C++的新手让我头疼.
如果我理解正确的pbolem,我需要cout区间[a,b]的总和,这应该意味着:17 + 18 + 19 + 20 + 21 ..... + 52 =?(纠正我,如果我错了!)我尝试了while,do-while并且他们都结束了无限循环所以现在我尝试for循环让我只增加a的值直到它达到52.
Run Code Online (Sandbox Code Playgroud)#include <iostream> int main(int argc, char* argv[]) { const int a = 17; const int b = 52; int summe = 0; for(summe = a; summe <=b; summe++) std::cout << "Summe: " << summe << "\n"; return 0; }
假设我有一个名为Foo的类,它定义了合适的移动构造函数/赋值运算符.给定以下伪代码:
Foo some_func(Foo var) {
<update var>
return var;
}
int main() {
Foo var;
var = some_func(var);
}
Run Code Online (Sandbox Code Playgroud)
将var传递给some_func时,C++ 11会自动使用移动语义,并再次重新分配给var,因为var的原始值会被销毁吗?我认为这将是一个安全的优化,它可以让你编写与传递引用/指针一样快的纯函数.如果做不到,为什么不呢?我知道它可以用std :: move强制,但如果是自动的话它会很酷.
签名vector::push_back是:
void push_back (const value_type& val);
Run Code Online (Sandbox Code Playgroud)
这意味着它有责任不腐败val.
我的功能是:
Result User::addFriend(const User* newFriend)
{
// check that newFriend is valid and is not already a friend
if (newFriend == NULL || isFriend(newFriend)) return FAILURE;
friends_.push_back(newFriend);
friendsNum_++;
return SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
当我编译.c文件时,我得到编译错误:
invalid conversion from 'const User*' to
std::vector User*::value_type
Run Code Online (Sandbox Code Playgroud)
如果push_back承诺不改变val,为什么我们会得到这个错误?
克服错误的正确和清洁方法是什么?也许是const_cast?
谢谢!
User.h:
class User {
...
public:
vector<User*> friends_;
...
}
Run Code Online (Sandbox Code Playgroud) 最近我做了一个程序,它有一个字符数组 board[8][8][2];
它基本上是一个8X8板,可以存储'2'字母字符串.我没有提供完整的代码.
但这是问题所在.
for (j = 0; j < 8; j++) {
strcpy(board[1][j], P[j].sym);
}
cout << board[1][1] << endl;
Run Code Online (Sandbox Code Playgroud)
这里P[1].sym="P1"与P[0].sym="P0"和P[2].sym="P2"
因此P[j].sym基本上是一个两个字母的字符串,board[1][j]也应该是一个两个字母的字符串.
但输出为
cout << board[1][1] << endl;
Run Code Online (Sandbox Code Playgroud)
给出为 P1P2P3P4P5P6P7
和输出
cout << board[1][0] << endl;
Run Code Online (Sandbox Code Playgroud)
给出为 P0P1P2P3P4P5P6P7
对于
cout << board[1][5] << endl;
Run Code Online (Sandbox Code Playgroud)
P5P6P7 是输出.
为了消除任何疑问,整个board[8][8][[2]已经初始化并且所有P[j].sym已经初始化.
如果它有帮助,这里是初始化的代码P:
#include <iostream>
#include <string.h>
using namespace std;
class Game
{
public:
char board[8][8][2];
char *****possibilities;
}; …Run Code Online (Sandbox Code Playgroud)