小编Sin*_*all的帖子

CMake如何选择gcc和g ++进行编译?

我是CMake的新手,我想知道LINUX环境中的C++/C项目如何让CMake可以选择gcc和g ++之间的编译器.更具体地说,我的问题如下:

  1. 如果一个项目由.c和.cpp文件组成,那么.c文件是由gcc编译的,而.cpp文件是由g ++编译的吗?
  2. 如果项目只有c文件或cpp文件,那么CMake的默认编译操作是什么?是否可以改变它?

c++ cmake

34
推荐指数
2
解决办法
5万
查看次数

在Android应用程序之间共享Facebook应用程序ID

Facebook iOS SDK的这个页面解释了如何在多个iOS应用程序之间共享一个Facebook应用程序ID.但是我无法在Facebook Developer网站的Android区域找到相同的文档.有没有其他人有过这方面的经验,或者它根本不适用于Android?

android facebook

20
推荐指数
1
解决办法
5219
查看次数

C++文件流打开模式模糊

为了在C++中执行文件IO,我们使用ofstream,ifstream和fstream类.

  • ofstream:Stream类写入文件
  • ifstream:用于从文件中读取的Stream类
  • fstream:Stream类,用于读取和写入文件

将文件与流对象相关联的过程称为"打开文件".打开文件时,我们可以指定打开文件的模式.我的查询与ios::outios:in模式有关.

当我创建一个ofstream对象并用ios::in模式打开文件时,我能够写入文件,但只有当它已经创建时(如果ios::out模式文件尚不存在,也会创建模式文件).
但是当我创建ifstream对象并使用ios::out模式打开文件时,我能够从文件中读取.

我的问题是当流的类型(/ )本身指定正在执行哪种类型的操作(输入/输出)时,为什么这些模式(ios::in/ ios::out)由语言提供?ifstreamofstream

另外,为什么这种模糊的用法(ofstreamios::inifstreamios::out)在一种情况下有效并且在另一种情况下失败(尽管只有文件不存在)?

c++ file-io stream

15
推荐指数
1
解决办法
7157
查看次数

yaml-cpp迭代未定义值的地图的最简单方法

我想在不知道密钥的情况下获取地图中的每个节点.

我的YAML看起来像这样:

characterType :
 type1 :
  attribute1 : something
  attribute2 : something
 type2 :
  attribute1 : something
  attribute2 : something
Run Code Online (Sandbox Code Playgroud)

我不知道将声明多少"类型"或这些键的名称是什么.这就是我试图遍历地图的原因.

struct CharacterType{
  std::string attribute1;
  std::string attribute2;
};

namespace YAML{
  template<>
  struct convert<CharacterType>{
    static bool decode(const Node& node, CharacterType& cType){ 
       cType.attribute1 = node["attribute1"].as<std::string>();
       cType.attribute2 = node["attribute2"].as<std::string>();
       return true;
    }
  };
}

---------------------
std::vector<CharacterType> cTypeList;

for(YAML::const_iterator it=node["characterType"].begin(); it != node["characterType"].end(); ++it){
   cTypeList.push_back(it->as<CharacterType>());
}
Run Code Online (Sandbox Code Playgroud)

以前的代码在编译时没有给出任何麻烦,但是在执行时我得到了这个错误:在抛出一个实例后调用terminate YAML::TypedBadConversion<CharacterType>

我也尝试使用子索引而不是迭代器,得到相同的错误.

我确定我做错了什么,我只是看不到它.

c++ yaml-cpp

13
推荐指数
1
解决办法
8971
查看次数

lua程序显示当前时间

这是一段显示时间的lua脚本.我无法将数字分开,即:time.hour, ":"基本上显示hh:mm:ss

time = os.date("*t")
print(time.hour .. time.min .. time.sec)
Run Code Online (Sandbox Code Playgroud)

lua timestamp date

11
推荐指数
1
解决办法
1万
查看次数

选择器继承

有没有办法从selectorAndroid中已知的s 继承?

我想扩展一个EditText并添加一个自定义状态,到目前为止,我理解使用onCreateDrawableState()方法进行.当一个选择器进入游戏时有一个简单的方法来使用默认选择器,只是添加我的而不是再次定义它们?

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.my.package">

<item android:state_enabled="false" android:drawable="@drawable/login_textfield_bg_error" />
<item android:state_window_focused="false" android:drawable="@drawable/login_textfield_bg_error">
<item android:state_pressed="true" android:drawable="@drawable/login_textfield_bg_error" />
<item android:state_selected="true" android:drawable="@drawable/login_textfield_bg_error" />
<item app:errorBackground="@drawable/login_textfield_bg_error" />
</selector>
Run Code Online (Sandbox Code Playgroud)

android state selector

9
推荐指数
1
解决办法
930
查看次数

将光标移动到QTextEdit内部

我有一个表格,上面有一个QTextEdit叫做的表格translationInput.我正在尝试为用户提供编辑功能.

QTextEdit将包含HTML格式的文本.我有一组按钮,如" 粗体 "," 斜体 "等,它们应该将相应的标签添加到文档中.如果在没有选择文本时按下按钮,我只想插入一对标签,例如<b></b>.如果选择了某些文本,我希望标签从中向左和向右显示.

这很好用.但是,我还希望在此之后将光标放在结束标记之前,这样用户就可以继续在新添加的标记内输入,而无需手动重新定位光标.默认情况下,光标出现新添加的文本之后(所以在我的情况下,就在结束标记之后).

这是我对Italic按钮的代码:

//getting the selected text(if any), and adding tags.
QString newText = ui.translationInput->textCursor().selectedText().prepend("<i>").append("</i>");
//Inserting the new-formed text into the edit
ui.translationInput->insertPlainText( newText );
//Returning focus to the edit
ui.translationInput->setFocus();
//!!! Here I want to move the cursor 4 characters left to place it before the </i> tag.
ui.translationInput->textCursor().movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, 4);
Run Code Online (Sandbox Code Playgroud)

但是,最后一行没有做任何事情,即使movePosition()返回true,光标也不会移动,这意味着所有操作都成功完成.

我也尝试过这样做QTextCursor::PreviousCharacter而不是QTextCursor::Left …

c++ qt qtextedit qtextcursor

9
推荐指数
1
解决办法
2万
查看次数

std ::如何在没有显式std :: forward的情况下应用转发参数?

考虑可能的实施std::apply:

namespace detail {
template <class F, class Tuple, std::size_t... I>
constexpr decltype(auto) apply_impl(F &&f, Tuple &&t, std::index_sequence<I...>) 
{
    return std::invoke(std::forward<F>(f), std::get<I>(std::forward<Tuple>(t))...);
}
}  // namespace detail

template <class F, class Tuple>
constexpr decltype(auto) apply(F &&f, Tuple &&t) 
{
    return detail::apply_impl(
        std::forward<F>(f), std::forward<Tuple>(t),
        std::make_index_sequence<std::tuple_size_v<std::decay_t<Tuple>>>{});
}
Run Code Online (Sandbox Code Playgroud)

为什么在调用f带有参数元组的function()来传递(t)时,我们不需要在实现std::forward中对元组的每个元素std::get<I>(std::forward<Tuple>(t))...执行?

c++ perfect-forwarding c++17 stdapply

9
推荐指数
1
解决办法
342
查看次数

多次调用lambda表达式

我正在尝试新标准的lambda表达式,但仍然不太了解它们.

假设我的代码中有一个lambda,例如在我的主代码中:

int main( int argc, char * argv[])
{
    //some code
    [](int x, int y)->float
    {
        return static_cast<float>(x) / static_cast<float>(y);
    };
    //some more code here
    //<---now I want to use my lambda-expression here
}
Run Code Online (Sandbox Code Playgroud)

很明显我可能需要多次使用它,所以答案"只是在那里定义它"不起作用:P所以,我如何在代码中稍后调用这个lambda表达式?我是否必须创建一个函数指针并使用该指针?还是有更好/更简单的方法?

c++ lambda c++11

8
推荐指数
2
解决办法
7056
查看次数

函数调用与局部变量

我经常看到多次调用其他函数的函数,而不是一次存储函数的结果.

(1):

void ExampleFunction()
{ 
    if (TestFunction() > x || TestFunction() < y || TestFunction() == z)
    {
        a = TestFunction();
        return; 
    }
    b = TestFunction();
}
Run Code Online (Sandbox Code Playgroud)

相反,我会这样写,(2):

void ExampleFunction()
{
    int test = TestFunction();
    if (test > x || test < y || test == z)
    {
        a = test;
        return;
    }
    b = test;
}
Run Code Online (Sandbox Code Playgroud)

我认为版本2更好阅读,更好地调试.但我想知道为什么人们会像1号那样做?有什么我看不到的吗?绩效问题?当我看到它时,我在最坏的情况下看到数字(1)中的4个函数调用而不是数字(2)中的1个函数调用,因此性能应该在数字(1)中更差,不是吗?

c++ variables function local call

8
推荐指数
1
解决办法
2051
查看次数